/*
数据库连接池
*/
/*
    npm install mysql  //需要安装mysql模块
 */
const mysql = require('mysql'); //引入mysql模块

/**
 * 公共函数，统一创建数据库连接池
 * @returns         Connection
 */
function dbCore() {
    return mysql.createConnection({
        host: 'localhost',
        port: 3307,
        user: 'root',
        password: 'root',
        database: 'food',
        // timezone:"SYSTEM",
        dateStrings: true //解决时间格式并保证时区问题
    });
}

module.exports = {
    /**
     * 数据库连接，并且完成对应sql的增删改查操作
     * @param sql      sql语句
     * @param where    条件
     * @param fun      回调函数
     */
    db(sql, where, fun) {
        let dbSql = dbCore();
        dbSql.connect();
        dbSql.query(sql, where, fun);
        dbSql.end();
    },
    /**
     * 数据库连接，事务级别连接，多条数据操作，针对多条数据操作的insert、update、delete
     * @param sql           sql语句
     * @param whereArray    批量条件
     * @param fun           回调函数
     */
    dbTransaction(sql, whereArray, fun) {
        let dbSql = dbCore();
        dbSql.connect();
        for (i = 0; i < whereArray.length; i++) {
            dbSql.query(sql, whereArray[i], fun);
        }
        dbSql.end();

        // dbSql.beginTransaction(function(err) {
        //     if (err)
        //         throw err;
        //     dbSql.query('INSERT INTO posts SET title=?', title, function(err, result) {
        //         if (err) {
        //             dbSql.rollback(function() {
        //                 throw err;
        //             });
        //         }
        //
        //         var log = 'Post ' + result.insertId + ' added';
        //
        //         dbSql.query('INSERT INTO log SET data=?', log, function(err, result) {
        //             if (err) {
        //                 dbSql.rollback(function() {
        //                     throw err;
        //                 });
        //             }
        //             dbSql.commit(function(err) {
        //                 if (err) {
        //                     dbSql.rollback(function() {
        //                         throw err;
        //                     });
        //                 }
        //                 console.log('success!');
        //             });
        //         });
        //     });
        // });
    }
};